home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / AIncludes / Devices.a < prev    next >
Encoding:
Text File  |  1998-02-12  |  27.6 KB  |  916 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        Devices.a
  3. ;
  4. ;    Contains:    Device Manager Interfaces.
  5. ;
  6. ;    Version:    Technology:    Mac OS 8
  7. ;                Release:    Universal Interfaces 3.1
  8. ;
  9. ;    Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved
  10. ;
  11. ;    Bugs?:        Please include the the file and version information (from above) with
  12. ;                the problem description.  Developers belonging to one of the Apple
  13. ;                developer programs can submit bug reports to:
  14. ;
  15. ;                    devsupport@apple.com
  16. ;
  17. ;
  18.     IF &TYPE('__DEVICES__') = 'UNDEFINED' THEN
  19. __DEVICES__ SET 1
  20.  
  21.     IF &TYPE('__OSUTILS__') = 'UNDEFINED' THEN
  22.     include 'OSUtils.a'
  23.     ENDIF
  24.     IF &TYPE('__FILES__') = 'UNDEFINED' THEN
  25.     include 'Files.a'
  26.     ENDIF
  27.     IF &TYPE('__QUICKDRAW__') = 'UNDEFINED' THEN
  28.     include 'Quickdraw.a'
  29.     ENDIF
  30.     IF &TYPE('__NAMEREGISTRY__') = 'UNDEFINED' THEN
  31.     include 'NameRegistry.a'
  32.     ENDIF
  33.     IF &TYPE('__CODEFRAGMENTS__') = 'UNDEFINED' THEN
  34.     include 'CodeFragments.a'
  35.     ENDIF
  36.     IF &TYPE('__DRIVERFAMILYMATCHING__') = 'UNDEFINED' THEN
  37.     include 'DriverFamilyMatching.a'
  38.     ENDIF
  39.  
  40. ;  Values of the 'message' parameter to a Chooser device package 
  41.  
  42. chooserInitMsg                    EQU        11                    ; the user selected this device package 
  43. newSelMsg                        EQU        12                    ; the user made new device selections 
  44. fillListMsg                        EQU        13                    ; fill the device list with choices 
  45. getSelMsg                        EQU        14                    ; mark one or more choices as selected 
  46. selectMsg                        EQU        15                    ; the user made a selection 
  47. deselectMsg                        EQU        16                    ; the user canceled a selection 
  48. terminateMsg                    EQU        17                    ; allows device package to clean up 
  49. buttonMsg                        EQU        19                    ; the user selected a button 
  50.  
  51. ;  Values of the 'caller' parameter to a Chooser device package 
  52.  
  53. chooserID                        EQU        1
  54.  
  55. ;  Values of the 'message' parameter to a Monitor 'mntr' 
  56.  
  57. initMsg                            EQU        1                    ;initialization
  58. okMsg                            EQU        2                    ;user clicked OK button
  59. cancelMsg                        EQU        3                    ;user clicked Cancel button
  60. hitMsg                            EQU        4                    ;user clicked control in Options dialog
  61. nulMsg                            EQU        5                    ;periodic event
  62. updateMsg                        EQU        6                    ;update event
  63. activateMsg                        EQU        7                    ;not used
  64. deactivateMsg                    EQU        8                    ;not used
  65. keyEvtMsg                        EQU        9                    ;keyboard event
  66. superMsg                        EQU        10                    ;show superuser controls
  67. normalMsg                        EQU        11                    ;show only normal controls
  68. startupMsg                        EQU        12                    ;code has been loaded
  69.  
  70. ;  control codes for DeskAccessories 
  71.  
  72. goodbye                            EQU        -1                    ; heap being reinitialized 
  73. killCode                        EQU        1                    ; KillIO requested 
  74. accEvent                        EQU        64                    ; handle an event 
  75. accRun                            EQU        65                    ; time for periodic action 
  76. accCursor                        EQU        66                    ; change cursor shape 
  77. accMenu                            EQU        67                    ; handle menu item 
  78. accUndo                            EQU        68                    ; handle undo command 
  79. accCut                            EQU        70                    ; handle cut command 
  80. accCopy                            EQU        71                    ; handle copy command 
  81. accPaste                        EQU        72                    ; handle paste command 
  82. accClear                        EQU        73                    ; handle clear command 
  83. ;  Control/Status Call Codes 
  84.  
  85. drvStsCode                        EQU        8                    ; status call code for drive status 
  86. ejectCode                        EQU        7                    ; control call eject code 
  87. tgBuffCode                        EQU        8                    ; set tag buffer code 
  88. ;  miscellaneous Device Manager constants 
  89.  
  90. ioInProgress                    EQU        1                    ; predefined value of ioResult while I/O is pending 
  91. aRdCmd                            EQU        2                    ; low byte of ioTrap for Read calls 
  92. aWrCmd                            EQU        3                    ; low byte of ioTrap for Write calls 
  93. asyncTrpBit                        EQU        10                    ; trap word modifier 
  94. noQueueBit                        EQU        9                    ; trap word modifier 
  95. ;  flags used in the driver header and device control entry 
  96.  
  97. dReadEnable                        EQU        0                    ; set if driver responds to read requests 
  98. dWritEnable                        EQU        1                    ; set if driver responds to write requests 
  99. dCtlEnable                        EQU        2                    ; set if driver responds to control requests 
  100. dStatEnable                        EQU        3                    ; set if driver responds to status requests 
  101. dNeedGoodBye                    EQU        4                    ; set if driver needs time for performing periodic tasks 
  102. dNeedTime                        EQU        5                    ; set if driver needs time for performing periodic tasks 
  103. dNeedLock                        EQU        6                    ; set if driver must be locked in memory as soon as it is opened 
  104.  
  105. dNeedLockMask                    EQU        $4000                ; set if driver must be locked in memory as soon as it is opened 
  106. dNeedTimeMask                    EQU        $2000                ; set if driver needs time for performing periodic tasks 
  107. dNeedGoodByeMask                EQU        $1000                ; set if driver needs to be called before the application heap is initialized 
  108. dStatEnableMask                    EQU        $0800                ; set if driver responds to status requests 
  109. dCtlEnableMask                    EQU        $0400                ; set if driver responds to control requests 
  110. dWritEnableMask                    EQU        $0200                ; set if driver responds to write requests 
  111. dReadEnableMask                    EQU        $0100                ; set if driver responds to read requests 
  112.  
  113. ;  run-time flags used in the device control entry 
  114.  
  115. dOpened                            EQU        5                    ; driver is open 
  116. dRAMBased                        EQU        6                    ; dCtlDriver is a handle (1) or pointer (0) 
  117. drvrActive                        EQU        7                    ; driver is currently processing a request 
  118.  
  119. drvrActiveMask                    EQU        $0080                ; driver is currently processing a request 
  120. dRAMBasedMask                    EQU        $0040                ; dCtlDriver is a handle (1) or pointer (0) 
  121. dOpenedMask                        EQU        $0020                ; driver is open 
  122.  
  123. DRVRHeader                RECORD 0
  124. drvrFlags                 ds.w    1                ; offset: $0 (0)
  125. drvrDelay                 ds.w    1                ; offset: $2 (2)
  126. drvrEMask                 ds.w    1                ; offset: $4 (4)
  127. drvrMenu                 ds.w    1                ; offset: $6 (6)
  128. drvrOpen                 ds.w    1                ; offset: $8 (8)
  129. drvrPrime                 ds.w    1                ; offset: $A (10)
  130. drvrCtl                     ds.w    1                ; offset: $C (12)
  131. drvrStatus                 ds.w    1                ; offset: $E (14)
  132. drvrClose                 ds.w    1                ; offset: $10 (16)
  133. drvrName                 ds.b    1                ; offset: $12 (18) <-- really an array of length one
  134.                          ORG 20
  135. sizeof                     EQU *                    ; size:   $14 (20)
  136.                         ENDR
  137. ; typedef struct DRVRHeader *            DRVRHeaderPtr
  138.  
  139. ; typedef DRVRHeaderPtr *                DRVRHeaderHandle
  140.  
  141. DCtlEntry                RECORD 0
  142. dCtlDriver                 ds.l    1                ; offset: $0 (0)
  143. dCtlFlags                 ds.w    1                ; offset: $4 (4)
  144. dCtlQHdr                 ds        QHdr            ; offset: $6 (6)
  145. dCtlPosition             ds.l    1                ; offset: $10 (16)
  146. dCtlStorage                 ds.l    1                ; offset: $14 (20)
  147. dCtlRefNum                 ds.w    1                ; offset: $18 (24)
  148. dCtlCurTicks             ds.l    1                ; offset: $1A (26)
  149. dCtlWindow                 ds.l    1                ; offset: $1E (30)
  150. dCtlDelay                 ds.w    1                ; offset: $22 (34)
  151. dCtlEMask                 ds.w    1                ; offset: $24 (36)
  152. dCtlMenu                 ds.w    1                ; offset: $26 (38)
  153. sizeof                     EQU *                    ; size:   $28 (40)
  154.                         ENDR
  155. ; typedef struct DCtlEntry *            DCtlPtr
  156.  
  157. ; typedef DCtlPtr *                        DCtlHandle
  158.  
  159. AuxDCE                    RECORD 0
  160. dCtlDriver                 ds.l    1                ; offset: $0 (0)
  161. dCtlFlags                 ds.w    1                ; offset: $4 (4)
  162. dCtlQHdr                 ds        QHdr            ; offset: $6 (6)
  163. dCtlPosition             ds.l    1                ; offset: $10 (16)
  164. dCtlStorage                 ds.l    1                ; offset: $14 (20)
  165. dCtlRefNum                 ds.w    1                ; offset: $18 (24)
  166. dCtlCurTicks             ds.l    1                ; offset: $1A (26)
  167. dCtlWindow                 ds.l    1                ; offset: $1E (30)
  168. dCtlDelay                 ds.w    1                ; offset: $22 (34)
  169. dCtlEMask                 ds.w    1                ; offset: $24 (36)
  170. dCtlMenu                 ds.w    1                ; offset: $26 (38)
  171. dCtlSlot                 ds.b    1                ; offset: $28 (40)
  172. dCtlSlotId                 ds.b    1                ; offset: $29 (41)
  173. dCtlDevBase                 ds.l    1                ; offset: $2A (42)
  174. dCtlOwner                 ds.l    1                ; offset: $2E (46)
  175. dCtlExtDev                 ds.b    1                ; offset: $32 (50)
  176. fillByte                 ds.b    1                ; offset: $33 (51)
  177. dCtlNodeID                 ds.l    1                ; offset: $34 (52)
  178. sizeof                     EQU *                    ; size:   $38 (56)
  179.                         ENDR
  180. ; typedef struct AuxDCE *                AuxDCEPtr
  181.  
  182. ; typedef AuxDCEPtr *                    AuxDCEHandle
  183.  
  184. ;     The NDRV Driver IO Entry Point and Commands 
  185. ; typedef UInt16                         UnitNumber
  186.  
  187. ; typedef UInt32                         DriverOpenCount
  188.  
  189. ; typedef SInt16                         DriverRefNum
  190.  
  191. ; typedef SInt16                         DriverFlags
  192.  
  193. ; typedef UInt32                         IOCommandCode
  194.  
  195.  
  196. kOpenCommand                    EQU        0
  197. kCloseCommand                    EQU        1
  198. kReadCommand                    EQU        2
  199. kWriteCommand                    EQU        3
  200. kControlCommand                    EQU        4
  201. kStatusCommand                    EQU        5
  202. kKillIOCommand                    EQU        6
  203. kInitializeCommand                EQU        7                    ; init driver and device
  204. kFinalizeCommand                EQU        8                    ; shutdown driver and device
  205. kReplaceCommand                    EQU        9                    ; replace an old driver
  206. kSupersededCommand                EQU        10                    ; prepare to be replaced by a new driver
  207. kSuspendCommand                    EQU        11                    ; prepare driver to go to sleep
  208. kResumeCommand                    EQU        12                    ; wake up sleeping driver
  209.  
  210.  
  211.  
  212.  
  213. ; typedef UInt32                         IOCommandKind
  214.  
  215.  
  216. kSynchronousIOCommandKind        EQU        $00000001
  217. kAsynchronousIOCommandKind        EQU        $00000002
  218. kImmediateIOCommandKind            EQU        $00000004
  219. DriverInitInfo            RECORD 0
  220. refNum                     ds.w    1                ; offset: $0 (0)
  221. deviceEntry                 ds        RegEntryID        ; offset: $2 (2)
  222. sizeof                     EQU *                    ; size:   $12 (18)
  223.                         ENDR
  224. ; typedef struct DriverInitInfo *        DriverInitInfoPtr
  225.  
  226. DriverReplaceInfo        RECORD 0
  227. f                         ds        DriverInitInfo
  228. sizeof                     EQU *                    ; size:   $12 (18)
  229.                         ENDR
  230.  
  231.  
  232. ; typedef struct DriverInitInfo *        DriverReplaceInfoPtr
  233.  
  234. DriverFinalInfo            RECORD 0
  235. refNum                     ds.w    1                ; offset: $0 (0)
  236. deviceEntry                 ds        RegEntryID        ; offset: $2 (2)
  237. sizeof                     EQU *                    ; size:   $12 (18)
  238.                         ENDR
  239. ; typedef struct DriverFinalInfo *        DriverFinalInfoPtr
  240.  
  241. DriverSupersededInfo    RECORD 0
  242. f                         ds        DriverFinalInfo
  243. sizeof                     EQU *                    ; size:   $12 (18)
  244.                         ENDR
  245.  
  246.  
  247. ; typedef struct DriverFinalInfo *        DriverSupersededInfoPtr
  248.  
  249.  
  250. ;  Contents are command specific
  251.  
  252. IOCommandContents        RECORD 0
  253. pb                         ds.l    1                ; offset: $0 (0)
  254.                          ORG 0
  255. initialInfo                 ds.l    1                ; offset: $0 (0)
  256.                          ORG 0
  257. finalInfo                 ds.l    1                ; offset: $0 (0)
  258.                          ORG 0
  259. replaceInfo                 ds.l    1                ; offset: $0 (0)
  260.                          ORG 0
  261. supersededInfo             ds.l    1                ; offset: $0 (0)
  262. sizeof                     EQU *                    ; size:   $4 (4)
  263.                         ENDR
  264. ;  Record to describe a file-based driver candidate 
  265. FileBasedDriverRecord    RECORD 0
  266. theSpec                     ds        FSSpec            ; offset: $0 (0)        ;  file specification
  267. theType                     ds        MacDriverType    ; offset: $46 (70)        ;  nameInfoStr + version number
  268. compatibleProp             ds.b    1                ; offset: $6A (106)        ;  true if matched using a compatible name
  269. pad                         ds.b    3                ; offset: $6B (107)        ;  alignment
  270. sizeof                     EQU *                    ; size:   $6E (110)
  271.                         ENDR
  272. ; typedef struct FileBasedDriverRecord * FileBasedDriverRecordPtr
  273.  
  274. ;  Detailed Record to describe a file-based driver candidate. Includes fragment name 
  275. FileBasedDriverDetailed    RECORD 0
  276. fileBasedDriver             ds        FileBasedDriverRecord ; offset: $0 (0)
  277. fragName                 ds        Str63            ; offset: $6E (110)
  278. sizeof                     EQU *                    ; size:   $AE (174)
  279.                         ENDR
  280. ; typedef struct FileBasedDriverDetailed * FileBasedDriverDetailedPtr
  281.  
  282. ;  Driver Loader API 
  283.  
  284. ;
  285. ; extern SInt16 HigherDriverVersion(NumVersion *driverVersion1, NumVersion *driverVersion2)
  286. ;
  287.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  288.         IMPORT_CFM_FUNCTION HigherDriverVersion
  289.     ENDIF
  290.  
  291. ;
  292. ; extern OSErr VerifyFragmentAsDriver(CFragConnectionID fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc)
  293. ;
  294.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  295.         IMPORT_CFM_FUNCTION VerifyFragmentAsDriver
  296.     ENDIF
  297.  
  298. ;
  299. ; extern OSErr GetDriverMemoryFragment(Ptr memAddr, long length, ConstStr63Param fragName, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc)
  300. ;
  301.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  302.         IMPORT_CFM_FUNCTION GetDriverMemoryFragment
  303.     ENDIF
  304.  
  305. ;
  306. ; extern OSErr GetDriverDiskFragment(FSSpecPtr fragmentSpec, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc)
  307. ;
  308.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  309.         IMPORT_CFM_FUNCTION GetDriverDiskFragment
  310.     ENDIF
  311.  
  312. ;
  313. ; extern OSErr GetNamedDriverDiskFragment(FSSpecPtr fragmentSpec, ConstStr63Param fragName, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc)
  314. ;
  315.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  316.         IMPORT_CFM_FUNCTION GetNamedDriverDiskFragment
  317.     ENDIF
  318.  
  319. ;
  320. ; extern OSErr InstallDriverFromFragment(CFragConnectionID fragmentConnID, RegEntryID *device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum)
  321. ;
  322.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  323.         IMPORT_CFM_FUNCTION InstallDriverFromFragment
  324.     ENDIF
  325.  
  326. ;
  327. ; extern OSErr InstallDriverFromFile(FSSpecPtr fragmentSpec, RegEntryID *device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum)
  328. ;
  329.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  330.         IMPORT_CFM_FUNCTION InstallDriverFromFile
  331.     ENDIF
  332.  
  333. ;
  334. ; extern OSErr InstallDriverFromMemory(Ptr memory, long length, ConstStr63Param fragName, RegEntryID *device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum)
  335. ;
  336.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  337.         IMPORT_CFM_FUNCTION InstallDriverFromMemory
  338.     ENDIF
  339.  
  340. ;
  341. ; extern OSErr InstallDriverFromDisk(Ptr theDriverName, RegEntryID *theDevice, UnitNumber theBeginningUnit, UnitNumber theEndingUnit, DriverRefNum *theRefNum)
  342. ;
  343.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  344.         IMPORT_CFM_FUNCTION InstallDriverFromDisk
  345.     ENDIF
  346.  
  347. ;
  348. ; extern OSErr FindDriversForDevice(RegEntryID *device, FSSpec *fragmentSpec, DriverDescription *fileDriverDesc, Ptr *memAddr, long *length, StringPtr fragName, DriverDescription *memDriverDesc)
  349. ;
  350.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  351.         IMPORT_CFM_FUNCTION FindDriversForDevice
  352.     ENDIF
  353.  
  354. ;
  355. ; extern OSErr FindDriverForDeviceFromFile(RegEntryID *device, FSSpec *fragmentSpec, DriverDescription *driverDesc, StringPtr fragName)
  356. ;
  357.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  358.         IMPORT_CFM_FUNCTION FindDriverForDeviceFromFile
  359.     ENDIF
  360.  
  361. ;
  362. ; extern OSErr FindDriverCandidates(RegEntryID *deviceID, Ptr *propBasedDriver, RegPropertyValueSize *propBasedDriverSize, StringPtr deviceName, MacDriverType *propBasedDriverType, Boolean *gotPropBasedDriver, FileBasedDriverRecordPtr fileBasedDrivers, ItemCount *nFileBasedDrivers)
  363. ;
  364.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  365.         IMPORT_CFM_FUNCTION FindDriverCandidates
  366.     ENDIF
  367.  
  368. ;
  369. ; extern OSErr FindDriverCandidatesDetailed(RegEntryIDPtr deviceID, Ptr *propBasedDriver, RegPropertyValueSize *propBasedDriverSize, StringPtr deviceName, MacDriverType *propBasedDriverType, Boolean *gotPropBasedDriver, FileBasedDriverDetailedPtr fileBasedDrivers, ItemCount *nFileBasedDrivers)
  370. ;
  371.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  372.         IMPORT_CFM_FUNCTION FindDriverCandidatesDetailed
  373.     ENDIF
  374.  
  375. ;
  376. ; extern OSErr ScanDriverCandidates(RegEntryID *deviceID, FileBasedDriverRecordPtr fileBasedDrivers, ItemCount nFileBasedDrivers, FileBasedDriverRecordPtr matchingDrivers, ItemCount *nMatchingDrivers)
  377. ;
  378.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  379.         IMPORT_CFM_FUNCTION ScanDriverCandidates
  380.     ENDIF
  381.  
  382. ;
  383. ; extern OSErr ScanDriverCandidatesDetailed(RegEntryID *deviceID, FileBasedDriverDetailedPtr fileBasedDrivers, ItemCount nFileBasedDrivers, FileBasedDriverDetailedPtr matchingDrivers, ItemCount *nMatchingDrivers)
  384. ;
  385.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  386.         IMPORT_CFM_FUNCTION ScanDriverCandidatesDetailed
  387.     ENDIF
  388.  
  389. ;
  390. ; extern SInt16 CompareFileCandToPropCand(RegEntryID *device, StringPtr deviceName, DriverTypePtr propBasedCandidate, FileBasedDriverRecordPtr fileBasedCandidate)
  391. ;
  392.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  393.         IMPORT_CFM_FUNCTION CompareFileCandToPropCand
  394.     ENDIF
  395.  
  396. ;
  397. ; extern void GetCompatibleProperty(RegEntryID *device, StringPtr *compatibleNames, ItemCount *nCompatibleNames)
  398. ;
  399.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  400.         IMPORT_CFM_FUNCTION GetCompatibleProperty
  401.     ENDIF
  402.  
  403. ;
  404. ; extern Boolean CompatibleDriverNames(StringPtr nameInfoStr, StringPtr compatibleNames, ItemCount nCompatibleNames, long *nameCount)
  405. ;
  406.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  407.         IMPORT_CFM_FUNCTION CompatibleDriverNames
  408.     ENDIF
  409.  
  410. ;
  411. ; extern OSErr GetDriverForDevice(RegEntryID *device, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc)
  412. ;
  413.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  414.         IMPORT_CFM_FUNCTION GetDriverForDevice
  415.     ENDIF
  416.  
  417. ;
  418. ; extern OSErr InstallDriverForDevice(RegEntryID *device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum)
  419. ;
  420.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  421.         IMPORT_CFM_FUNCTION InstallDriverForDevice
  422.     ENDIF
  423.  
  424. ;
  425. ; extern OSErr GetDriverInformation(DriverRefNum refNum, UnitNumber *unitNum, DriverFlags *flags, DriverOpenCount *count, StringPtr name, RegEntryID *device, CFragSystem7Locator *driverLoadLocation, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescription *driverDesc)
  426. ;
  427.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  428.         IMPORT_CFM_FUNCTION GetDriverInformation
  429.     ENDIF
  430.  
  431. ;
  432. ; extern OSErr GetDriverDescription(LogicalAddress fragmentPtr, DriverDescriptionPtr *theDriverDesc)
  433. ;
  434.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  435.         IMPORT_CFM_FUNCTION GetDriverDescription
  436.     ENDIF
  437.  
  438. ;
  439. ; extern OSStatus GetNamedDriverDescFromFSSpec(FSSpecPtr fragmentSpec, StringPtr fragName, DriverDescriptionPtr *driverDesc)
  440. ;
  441.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  442.         IMPORT_CFM_FUNCTION GetNamedDriverDescFromFSSpec
  443.     ENDIF
  444.  
  445. ;
  446. ; extern OSErr SetDriverClosureMemory(CFragConnectionID fragmentConnID, Boolean holdDriverMemory)
  447. ;
  448.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  449.         IMPORT_CFM_FUNCTION SetDriverClosureMemory
  450.     ENDIF
  451.  
  452. ;
  453. ; extern OSErr ReplaceDriverWithFragment(DriverRefNum theRefNum, CFragConnectionID fragmentConnID)
  454. ;
  455.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  456.         IMPORT_CFM_FUNCTION ReplaceDriverWithFragment
  457.     ENDIF
  458.  
  459. ;
  460. ; extern OSErr OpenInstalledDriver(DriverRefNum refNum, SInt8 ioPermission)
  461. ;
  462.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  463.         IMPORT_CFM_FUNCTION OpenInstalledDriver
  464.     ENDIF
  465.  
  466. ;
  467. ; extern OSErr RenameDriver(DriverRefNum refNum, StringPtr newDriverName)
  468. ;
  469.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  470.         IMPORT_CFM_FUNCTION RenameDriver
  471.     ENDIF
  472.  
  473. ;
  474. ; extern OSErr RemoveDriver(DriverRefNum refNum, Boolean immediate)
  475. ;
  476.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  477.         IMPORT_CFM_FUNCTION RemoveDriver
  478.     ENDIF
  479.  
  480. ;
  481. ; extern OSErr LookupDrivers(UnitNumber beginningUnit, UnitNumber endingUnit, Boolean emptyUnits, ItemCount *returnedRefNums, DriverRefNum *refNums)
  482. ;
  483.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  484.         IMPORT_CFM_FUNCTION LookupDrivers
  485.     ENDIF
  486.  
  487. ;
  488. ; extern UnitNumber HighestUnitNumber(void )
  489. ;
  490.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  491.         IMPORT_CFM_FUNCTION HighestUnitNumber
  492.     ENDIF
  493.  
  494. ;
  495. ; extern OSErr DriverGestaltOn(DriverRefNum refNum)
  496. ;
  497.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  498.         IMPORT_CFM_FUNCTION DriverGestaltOn
  499.     ENDIF
  500.  
  501. ;
  502. ; extern OSErr DriverGestaltOff(DriverRefNum refNum)
  503. ;
  504.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  505.         IMPORT_CFM_FUNCTION DriverGestaltOff
  506.     ENDIF
  507.  
  508. ;
  509. ; extern Boolean DriverGestaltIsOn(DriverFlags flags)
  510. ;
  511.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  512.         IMPORT_CFM_FUNCTION DriverGestaltIsOn
  513.     ENDIF
  514.  
  515.  
  516.     IF ¬ OLDROUTINELOCATIONS THEN
  517. ;
  518. ; pascal OSErr PBOpenSync(ParmBlkPtr paramBlock)
  519. ;
  520.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  521.         ; parameters:
  522.         ;    paramBlock      => A0
  523.         ; returns:
  524.         ;    OSErr           <= D0
  525.         _PBOpenSync:    OPWORD    $A000
  526.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  527.         IMPORT_CFM_FUNCTION PBOpenSync
  528.     ENDIF
  529.  
  530. ;
  531. ; pascal OSErr PBOpenAsync(ParmBlkPtr paramBlock)
  532. ;
  533.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  534.         ; parameters:
  535.         ;    paramBlock      => A0
  536.         ; returns:
  537.         ;    OSErr           <= D0
  538.         _PBOpenAsync:    OPWORD    $A400
  539.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  540.         IMPORT_CFM_FUNCTION PBOpenAsync
  541.     ENDIF
  542.  
  543. ;
  544. ; pascal OSErr PBOpenImmed(ParmBlkPtr paramBlock)
  545. ;
  546.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  547.         ; parameters:
  548.         ;    paramBlock      => A0
  549.         ; returns:
  550.         ;    OSErr           <= D0
  551.         _PBOpenImmed:    OPWORD    $A200
  552.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  553.         IMPORT_CFM_FUNCTION PBOpenImmed
  554.     ENDIF
  555.  
  556. ;
  557. ; pascal OSErr PBCloseSync(ParmBlkPtr paramBlock)
  558. ;
  559.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  560.         ; parameters:
  561.         ;    paramBlock      => A0
  562.         ; returns:
  563.         ;    OSErr           <= D0
  564.         _PBCloseSync:    OPWORD    $A001
  565.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  566.         IMPORT_CFM_FUNCTION PBCloseSync
  567.     ENDIF
  568.  
  569. ;
  570. ; pascal OSErr PBCloseAsync(ParmBlkPtr paramBlock)
  571. ;
  572.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  573.         ; parameters:
  574.         ;    paramBlock      => A0
  575.         ; returns:
  576.         ;    OSErr           <= D0
  577.         _PBCloseAsync:    OPWORD    $A401
  578.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  579.         IMPORT_CFM_FUNCTION PBCloseAsync
  580.     ENDIF
  581.  
  582. ;
  583. ; pascal OSErr PBCloseImmed(ParmBlkPtr paramBlock)
  584. ;
  585.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  586.         ; parameters:
  587.         ;    paramBlock      => A0
  588.         ; returns:
  589.         ;    OSErr           <= D0
  590.         _PBCloseImmed:    OPWORD    $A201
  591.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  592.         IMPORT_CFM_FUNCTION PBCloseImmed
  593.     ENDIF
  594.  
  595. ;
  596. ; pascal OSErr PBReadSync(ParmBlkPtr paramBlock)
  597. ;
  598.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  599.         ; parameters:
  600.         ;    paramBlock      => A0
  601.         ; returns:
  602.         ;    OSErr           <= D0
  603.         _PBReadSync:    OPWORD    $A002
  604.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  605.         IMPORT_CFM_FUNCTION PBReadSync
  606.     ENDIF
  607.  
  608. ;
  609. ; pascal OSErr PBReadAsync(ParmBlkPtr paramBlock)
  610. ;
  611.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  612.         ; parameters:
  613.         ;    paramBlock      => A0
  614.         ; returns:
  615.         ;    OSErr           <= D0
  616.         _PBReadAsync:    OPWORD    $A402
  617.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  618.         IMPORT_CFM_FUNCTION PBReadAsync
  619.     ENDIF
  620.  
  621. ;
  622. ; pascal OSErr PBReadImmed(ParmBlkPtr paramBlock)
  623. ;
  624.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  625.         ; parameters:
  626.         ;    paramBlock      => A0
  627.         ; returns:
  628.         ;    OSErr           <= D0
  629.         _PBReadImmed:    OPWORD    $A202
  630.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  631.         IMPORT_CFM_FUNCTION PBReadImmed
  632.     ENDIF
  633.  
  634. ;
  635. ; pascal OSErr PBWriteSync(ParmBlkPtr paramBlock)
  636. ;
  637.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  638.         ; parameters:
  639.         ;    paramBlock      => A0
  640.         ; returns:
  641.         ;    OSErr           <= D0
  642.         _PBWriteSync:    OPWORD    $A003
  643.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  644.         IMPORT_CFM_FUNCTION PBWriteSync
  645.     ENDIF
  646.  
  647. ;
  648. ; pascal OSErr PBWriteAsync(ParmBlkPtr paramBlock)
  649. ;
  650.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  651.         ; parameters:
  652.         ;    paramBlock      => A0
  653.         ; returns:
  654.         ;    OSErr           <= D0
  655.         _PBWriteAsync:    OPWORD    $A403
  656.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  657.         IMPORT_CFM_FUNCTION PBWriteAsync
  658.     ENDIF
  659.  
  660. ;
  661. ; pascal OSErr PBWriteImmed(ParmBlkPtr paramBlock)
  662. ;
  663.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  664.         ; parameters:
  665.         ;    paramBlock      => A0
  666.         ; returns:
  667.         ;    OSErr           <= D0
  668.         _PBWriteImmed:    OPWORD    $A203
  669.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  670.         IMPORT_CFM_FUNCTION PBWriteImmed
  671.     ENDIF
  672.  
  673. ;
  674. ; pascal void AddDrive(short drvrRefNum, short drvNum, DrvQElPtr qEl)
  675. ;
  676.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  677.         _AddDrive:    OPWORD    $A04E
  678.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  679.         IMPORT_CFM_FUNCTION AddDrive
  680.     ENDIF
  681.  
  682. ;
  683. ; pascal QHdrPtr GetDrvQHdr(void )
  684. ;
  685.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  686.         Macro
  687.         _GetDrvQHdr           &dest=(sp)
  688.             move.l            #$00000308,&dest
  689.         EndM
  690.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  691.         IMPORT_CFM_FUNCTION GetDrvQHdr
  692.     ENDIF
  693.  
  694.     ENDIF
  695. ;
  696. ; pascal DCtlHandle GetDCtlEntry(short refNum)
  697. ;
  698.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  699.         IMPORT_CFM_FUNCTION GetDCtlEntry
  700.     ENDIF
  701.  
  702. ;    SetChooserAlert used to simply set a bit in a low-mem global
  703. ;    to tell the Chooser not to display its warning message when
  704. ;    the printer is changed. However, under MultiFinder and System 7,
  705. ;    this low-mem is swapped out when a layer change occurs, and the
  706. ;    Chooser never sees the change. It is obsolete, and completely
  707. ;    unsupported on the PowerPC. 68K apps can still call it if they
  708. ;    wish.
  709. ;    
  710. ;    pascal Boolean SetChooserAlert(Boolean f);
  711. ;
  712. ;
  713.  
  714. ;
  715. ; pascal OSErr DriverInstall(DRVRHeaderPtr drvrPtr, short refNum)
  716. ;
  717.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  718.         ; parameters:
  719.         ;    drvrPtr         => A0
  720.         ;    refNum          => D0
  721.         ; returns:
  722.         ;    OSErr           <= D0
  723.         _DriverInstall:    OPWORD    $A03D
  724.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  725.         IMPORT_CFM_FUNCTION DriverInstall
  726.     ENDIF
  727.  
  728. ;
  729. ; pascal OSErr DriverInstallReserveMem(DRVRHeaderPtr drvrPtr, short refNum)
  730. ;
  731.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  732.         ; parameters:
  733.         ;    drvrPtr         => A0
  734.         ;    refNum          => D0
  735.         ; returns:
  736.         ;    OSErr           <= D0
  737.         _DriverInstallReserveMem:    OPWORD    $A43D
  738.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  739.         IMPORT_CFM_FUNCTION DriverInstallReserveMem
  740.     ENDIF
  741.  
  742. ;  Note: DrvrInstall() is no longer supported, becuase it never really worked anyways.
  743. ;          There will soon be a DriverInstall() which does the right thing.
  744. ;
  745. ;        DrvrRemove has been renamed to DriverRemove.  But, InterfaceLib for PowerPC
  746. ;        still exports DrvrRemove, so a macro is used to map the new name to old.
  747. ;
  748. ;
  749.  
  750. ;
  751. ; pascal OSErr DrvrRemove(short refNum)
  752. ;
  753.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  754.         ; parameters:
  755.         ;    refNum          => D0
  756.         ; returns:
  757.         ;    OSErr           <= D0
  758.         _DrvrRemove:    OPWORD    $A03E
  759.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  760.         IMPORT_CFM_FUNCTION DrvrRemove
  761.     ENDIF
  762.  
  763.  
  764. ;
  765. ; pascal OSErr PBControlSync(ParmBlkPtr paramBlock)
  766. ;
  767.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  768.         ; parameters:
  769.         ;    paramBlock      => A0
  770.         ; returns:
  771.         ;    OSErr           <= D0
  772.         _PBControlSync:    OPWORD    $A004
  773.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  774.         IMPORT_CFM_FUNCTION PBControlSync
  775.     ENDIF
  776.  
  777. ;
  778. ; pascal OSErr PBControlAsync(ParmBlkPtr paramBlock)
  779. ;
  780.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  781.         ; parameters:
  782.         ;    paramBlock      => A0
  783.         ; returns:
  784.         ;    OSErr           <= D0
  785.         _PBControlAsync:    OPWORD    $A404
  786.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  787.         IMPORT_CFM_FUNCTION PBControlAsync
  788.     ENDIF
  789.  
  790. ;
  791. ; pascal OSErr PBControlImmed(ParmBlkPtr paramBlock)
  792. ;
  793.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  794.         ; parameters:
  795.         ;    paramBlock      => A0
  796.         ; returns:
  797.         ;    OSErr           <= D0
  798.         _PBControlImmed:    OPWORD    $A204
  799.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  800.         IMPORT_CFM_FUNCTION PBControlImmed
  801.     ENDIF
  802.  
  803. ;
  804. ; pascal OSErr PBStatusSync(ParmBlkPtr paramBlock)
  805. ;
  806.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  807.         ; parameters:
  808.         ;    paramBlock      => A0
  809.         ; returns:
  810.         ;    OSErr           <= D0
  811.         _PBStatusSync:    OPWORD    $A005
  812.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  813.         IMPORT_CFM_FUNCTION PBStatusSync
  814.     ENDIF
  815.  
  816. ;
  817. ; pascal OSErr PBStatusAsync(ParmBlkPtr paramBlock)
  818. ;
  819.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  820.         ; parameters:
  821.         ;    paramBlock      => A0
  822.         ; returns:
  823.         ;    OSErr           <= D0
  824.         _PBStatusAsync:    OPWORD    $A405
  825.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  826.         IMPORT_CFM_FUNCTION PBStatusAsync
  827.     ENDIF
  828.  
  829. ;
  830. ; pascal OSErr PBStatusImmed(ParmBlkPtr paramBlock)
  831. ;
  832.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  833.         ; parameters:
  834.         ;    paramBlock      => A0
  835.         ; returns:
  836.         ;    OSErr           <= D0
  837.         _PBStatusImmed:    OPWORD    $A205
  838.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  839.         IMPORT_CFM_FUNCTION PBStatusImmed
  840.     ENDIF
  841.  
  842. ;
  843. ; pascal OSErr PBKillIOSync(ParmBlkPtr paramBlock)
  844. ;
  845.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  846.         ; parameters:
  847.         ;    paramBlock      => A0
  848.         ; returns:
  849.         ;    OSErr           <= D0
  850.         _PBKillIOSync:    OPWORD    $A006
  851.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  852.         IMPORT_CFM_FUNCTION PBKillIOSync
  853.     ENDIF
  854.  
  855. ;
  856. ; pascal OSErr PBKillIOAsync(ParmBlkPtr paramBlock)
  857. ;
  858.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  859.         ; parameters:
  860.         ;    paramBlock      => A0
  861.         ; returns:
  862.         ;    OSErr           <= D0
  863.         _PBKillIOAsync:    OPWORD    $A406
  864.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  865.         IMPORT_CFM_FUNCTION PBKillIOAsync
  866.     ENDIF
  867.  
  868. ;
  869. ; pascal OSErr PBKillIOImmed(ParmBlkPtr paramBlock)
  870. ;
  871.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  872.         ; parameters:
  873.         ;    paramBlock      => A0
  874.         ; returns:
  875.         ;    OSErr           <= D0
  876.         _PBKillIOImmed:    OPWORD    $A206
  877.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  878.         IMPORT_CFM_FUNCTION PBKillIOImmed
  879.     ENDIF
  880.  
  881. ;
  882. ; pascal short OpenDeskAcc(ConstStr255Param deskAccName)
  883. ;
  884.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  885.         _OpenDeskAcc:    OPWORD    $A9B6
  886.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  887.         IMPORT_CFM_FUNCTION OpenDeskAcc
  888.     ENDIF
  889.  
  890. ;
  891. ; pascal void CloseDeskAcc(short refNum)
  892. ;
  893.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  894.         _CloseDeskAcc:    OPWORD    $A9B7
  895.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  896.         IMPORT_CFM_FUNCTION CloseDeskAcc
  897.     ENDIF
  898.  
  899. ;    The PBxxx() routines are obsolete.  
  900. ;    
  901. ;    Use the PBxxxSync(), PBxxxAsync(), or PBxxxImmed version instead.
  902. ;
  903.  
  904.  
  905.     IF ¬ OLDROUTINELOCATIONS THEN
  906.     ENDIF
  907.  
  908.  
  909.  
  910.  
  911.     ENDIF ; __DEVICES__ 
  912.  
  913.